#include <avr/io.h>
#include <stdint.h>           // for uint8_t etc
#include <avr/interrupt.h>    // for interrupts    
//For Pin Interrupt Control Register
int main(void)

{
    DDRB &= ~(1 << DDB3); // Clear the PB1 pin
    // PB1 pin are now inputs
    PORTB |= (1 << PORTB3); // turn On the Pull-up
    // PB1 pull-up enabled
    PCICR |= (1 << PCIE0);
    //PCICR Bits 3 4 5 6 7 are reserve bits
    //PCIE2 is bit 2 = PCINT23...16
    //PCIE1 is bit 1 = PCINT14...8
    //PCIE0 is bit 0 = PCINT7...0  <-- expecting interrupt on one of these particular 8 pins
    PCMSK0 |= (1 << PCINT3);   // set PCINT3 to trigger an interrupt on state change 
    //Enable Interrupt on just PCINT3
    //PCMSK0 states which PCINT7...0 is enabled 
    sei();// turn on global interrupts (SREG bit 7)
    //SREG Bit 7 is Global Interrupt Enable = sei() changes just bit 7
    while(1)
    {
        /*main program loop here */
    }
}

ISR (PCINT0_vect)
//PCINT0_vect is for PCINT5...0
//PCINT1_vect is for PCINT13...8
//PCINT2_vect is for PCINT23...16
{
    if(PORTB & (1 << PB3))
    {
        /* LOW to HIGH pin change */
    }
    else
    {
        /* HIGH to LOW pin change */
    }
}
